package com.example.smartwaterapi.service;

import com.example.smartwaterapi.entity.User;

import java.util.Map;

/**
 * 微信公众号服务接口
 */
public interface WechatOfficialService {

    /**
     * 微信公众号授权登录
     *
     * @param code 授权码
     * @return 登录结果
     */
    Map<String, Object> officialLogin(String code);

    /**
     * 生成公众号授权URL
     *
     * @param redirectUri 回调地址
     * @param state 状态参数
     * @return 授权URL
     */
    String generateAuthUrl(String redirectUri, String state);

    /**
     * 绑定公众号到现有用户
     *
     * @param userId 用户ID
     * @param code 授权码
     * @return 绑定结果
     */
    boolean bindOfficialAccount(Long userId, String code);

    /**
     * 解绑公众号
     *
     * @param userId 用户ID
     * @return 解绑结果
     */
    boolean unbindOfficialAccount(Long userId);

    /**
     * 通过unionid统一处理openid
     *
     * @param unionid 微信unionid
     * @param wxOpenid 公众号openid
     * @param miniOpenid 小程序openid
     * @return 统一处理结果
     */
    User unifyUserByUnionid(String unionid, String wxOpenid, String miniOpenid);

    /**
     * 获取微信公众号Access Token
     *
     * @return Access Token
     */
    String getWechatAccessToken();
} 